//package com.weseal.config;
//
//import com.alibaba.fastjson.serializer.SerializerFeature;
//import com.alibaba.fastjson.support.config.FastJsonConfig;
//import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
//import com.weseal.common.interceptor.LoginInterceptor;
//import org.apache.log4j.Logger;
//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
//import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
//import org.apache.shiro.web.mgt.WebSecurityManager;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.ComponentScan;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.DependsOn;
//import org.springframework.context.annotation.EnableAspectJAutoProxy;
//import org.springframework.context.annotation.Import;
//import org.springframework.context.annotation.PropertySource;
//import org.springframework.core.annotation.Order;
//import org.springframework.http.MediaType;
//import org.springframework.http.converter.HttpMessageConverter;
//import org.springframework.http.converter.ResourceHttpMessageConverter;
//import org.springframework.http.converter.StringHttpMessageConverter;
//import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
//import org.springframework.web.multipart.commons.CommonsMultipartResolver;
//import org.springframework.web.servlet.HandlerAdapter;
//import org.springframework.web.servlet.HandlerMapping;
//import org.springframework.web.servlet.ViewResolver;
//import org.springframework.web.servlet.config.annotation.EnableWebMvc;
//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
//import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
//import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
//import org.springframework.web.servlet.handler.SimpleServletHandlerAdapter;
//import org.springframework.web.servlet.i18n.CookieLocaleResolver;
//import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
//import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
//import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
//import org.springframework.web.servlet.view.InternalResourceViewResolver;
//
//import javax.servlet.Filter;
//import java.nio.charset.Charset;
//import java.util.ArrayList;
//import java.util.LinkedHashMap;
//import java.util.List;
//import java.util.Map;
//
////@Configuration
////@EnableWebMvc
////@ComponentScan(basePackages = "com.weseal")
////@PropertySource("classpath:application.properties")
////@EnableAspectJAutoProxy(proxyTargetClass = true)
//public class MvcConfig extends WebMvcConfigurationSupport {
//
//	private static final Logger logger = Logger.getLogger(MvcConfig.class);
//
//
//	/**
//	 * 描述 : <注册试图处理器>. <br>
//	 * <p>
//	 * <使用方法说明>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public ViewResolver viewResolver() {
//		logger.info("ViewResolver");
//		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
//		viewResolver.setPrefix("/WEB-INF/views/");
//		viewResolver.setSuffix(".jsp");
//		return viewResolver;
//	}
//
//	@Override
//	protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//		super.configureMessageConverters(converters);
//		FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//		FastJsonConfig fastJsonConfig = new FastJsonConfig();
//		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//		List<MediaType> mediaTypes = new ArrayList<>();
//		mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
//		fastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypes);
//		fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
//		converters.add(initStringHttpMessage());
//		converters.add(new ResourceHttpMessageConverter());
//		converters.add(new AllEncompassingFormHttpMessageConverter());
//		converters.add(fastJsonHttpMessageConverter);
//	}
//
//	private StringHttpMessageConverter initStringHttpMessage() {
//		StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
//		List<MediaType> strConvertMediaTypes = new ArrayList<>();
//		MediaType textPlan = new MediaType(MediaType.TEXT_PLAIN, Charset.forName("UTF-8"));
//		MediaType textHtml = new MediaType(MediaType.TEXT_HTML, Charset.forName("UTF-8"));
//		MediaType allType = new MediaType(MediaType.ALL, Charset.forName("UTF-8"));
//		strConvertMediaTypes.add(textPlan);
//		strConvertMediaTypes.add(textHtml);
//		strConvertMediaTypes.add(allType);
//		stringHttpMessageConverter.setSupportedMediaTypes(strConvertMediaTypes);
//		return stringHttpMessageConverter;
//	}
//
//
//	/**
//	 * 描述 : <注册消息资源处理器>. <br>
//	 *<p>
//	 <使用方法说明>
//	 </p>
//	 * @return
//	 */
////    @Bean
////    public MessageSource messageSource() {
////    	logger.info("MessageSource");
////    	ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
////    	messageSource.setBasename("config.messages.messages");
////
////    	return messageSource;
////    }
//
//	/**
//	 * 描述 : <注册servlet适配器>. <br>
//	 * <p>
//	 * <只需要在自定义的servlet上用@Controller("映射路径")标注即可>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public HandlerAdapter servletHandlerAdapter() {
//		logger.info("HandlerAdapter");
//		return new SimpleServletHandlerAdapter();
//	}
//
//	/**
//	 * 描述 : <本地化拦截器>. <br>
//	 * <p>
//	 * <使用方法说明>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public LocaleChangeInterceptor localeChangeInterceptor() {
//		logger.info("LocaleChangeInterceptor");
//		return new LocaleChangeInterceptor();
//	}
//
//	/**
//	 * 描述 : <基于cookie的本地化资源处理器>. <br>
//	 * <p>
//	 * <使用方法说明>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean(name = "localeResolver")
//	public CookieLocaleResolver cookieLocaleResolver() {
//		logger.info("CookieLocaleResolver");
//		return new CookieLocaleResolver();
//	}
//
//
//	/**
//	 * 描述 : <RequestMappingHandlerMapping需要显示声明，否则不能注册自定义的拦截器>. <br>
//	 * <p>
//	 * <这个比较奇怪,理论上应该是不需要的>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public RequestMappingHandlerMapping requestMappingHandlerMapping() {
//		logger.info("RequestMappingHandlerMapping");
//
//		return super.requestMappingHandlerMapping();
//	}
//
//	/**
//	 * 判断过期拦截
//	 *
//	 * @return
//	 */
//	@Bean
//	public LoginInterceptor loginInterceptor() {
//		return new LoginInterceptor();
//	}
//
//
//	/**
//	 * 描述 : <添加拦截器>. <br>
//	 * <p>
//	 * <使用方法说明>
//	 * </p>
//	 *
//	 * @param registry
//	 */
//	@Override
//	protected void addInterceptors(InterceptorRegistry registry) {
//		logger.info("addInterceptors start");
//		registry.addInterceptor(loginInterceptor());
//		logger.info("addInterceptors end");
//	}
//
//	/**
//	 * 描述 : <HandlerMapping需要显示声明，否则不能注册资源访问处理器>. <br>
//	 * <p>
//	 * <这个比较奇怪,理论上应该是不需要的>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public HandlerMapping resourceHandlerMapping() {
//		logger.info("HandlerMapping");
//		return super.resourceHandlerMapping();
//	}
//
//	/**
//	 * 描述 : <资源访问处理器>. <br>
//	 * <p>
//	 * <可以在jsp中使用/static/**的方式访问/WEB-INF/static/下的内容>
//	 * </p>
//	 *
//	 * @param registry
//	 */
//	@Override
//	protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//		logger.info("addResourceHandlers");
//		registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/static/");
//	}
//
//	/**
//	 * 描述 : <文件上传处理器>. <br>
//	 * <p>
//	 * <使用方法说明>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean(name = "multipartResolver")
//	public CommonsMultipartResolver commonsMultipartResolver() {
//		logger.info("CommonsMultipartResolver");
//		return new CommonsMultipartResolver();
//	}
//
//	/**
//	 * 描述 : <异常处理器>. <br>
//	 *<p>
//	 <系统运行时遇到指定的异常将会跳转到指定的页面>
//	 </p>
//	 * @return
//	 */
////	@Bean(name="exceptionResolver")
////	public CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver(){
////		logger.info("CP_SimpleMappingExceptionResolver");
////		CP_SimpleMappingExceptionResolver simpleMappingExceptionResolver= new CP_SimpleMappingExceptionResolver();
////		simpleMappingExceptionResolver.setDefaultErrorView("common_error");
////		simpleMappingExceptionResolver.setExceptionAttribute("exception");
////		Properties properties = new Properties();
////		properties.setProperty("java.lang.RuntimeException", "common_error");
////		simpleMappingExceptionResolver.setExceptionMappings(properties);
////		return simpleMappingExceptionResolver;
////	}
//
//	/**
//	 * 描述 : <RequestMappingHandlerAdapter需要显示声明，否则不能注册通用属性编辑器>. <br>
//	 * <p>
//	 * <这个比较奇怪,理论上应该是不需要的>
//	 * </p>
//	 *
//	 * @return
//	 */
//	@Bean
//	public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
//		logger.info("RequestMappingHandlerAdapter");
//		return super.requestMappingHandlerAdapter();
//	}
//
////	/**
////	* 描述 : <注册通用属性编辑器>. <br>
////	*<p>
////		<这里只增加了字符串转日期和字符串两边去空格的处理>
////	 </p>
////	* @return
////	*/
////	@Override
////	protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer() {
////		logger.info("ConfigurableWebBindingInitializer");
////		ConfigurableWebBindingInitializer initializer = super.getConfigurableWebBindingInitializer();
////		CP_PropertyEditorRegistrar register = new CP_PropertyEditorRegistrar();
////		register.setFormat("yyyy-MM-dd");
////		initializer.setPropertyEditorRegistrar(register);
////		return initializer;
////	}
//
//
//}
//
